use crate::{geometry::mesh::MeshData, types::Color};

pub mod mesh;

pub struct PrimitiveMeshes;

impl PrimitiveMeshes {
    pub fn cube(size: f32, color: Color<f32>) -> MeshData {
        MeshData::cube(size, color)
    }

    pub fn cylinder(radius: f32, height: f32, segments: usize, color: Color<f32>) -> MeshData {
        MeshData::cylinder(radius, height, segments, color)
    }

    pub fn torus(
        major_radius: f32,
        minor_radius: f32,
        major_segments: usize,
        minor_segments: usize,
        color: Color<f32>,
    ) -> MeshData {
        MeshData::torus(major_radius, minor_radius, major_segments, minor_segments, color)
    }

    pub fn triangular_prism(base_size: f32, height: f32, color: Color<f32>) -> MeshData {
        MeshData::triangular_prism(base_size, height, color)
    }

    pub fn tetrahedron(base_size: f32, height: f32, color: Color<f32>) -> MeshData {
        MeshData::tetrahedron(base_size, height, color)
    }
}
